package com.ssm.util.mybatis;

import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;
import org.springframework.web.multipart.MultipartFile;
/**
*
*suae  2016年7月6日
*@return
*/




public class FileUtil {

	/**

	 * 

	 * @Author 执笔

	 * @Date 2016年1月6日 上午9:56:34

	 * @TODO 保存文件 

	 * @param rootPath 保存文件根目录  后面需要带上  /

	 * @param file 要保存的文件

	 * @throws IOException

	 * @Return 文件的保存路径 

	 */
	public static String save(String rootPath,File file) throws IOException{
		String fileName = getNewName(file.getName());
		String path = rootPath + getRealPath(fileName);
		FileUtils.copyFile(file, new File(path));
		return fileName;
	}
	
	/**

	 * 保存文件得到保存的文件

	 * @Author 执笔

	 * @Date 2016年2月20日 下午6:51:41

	 * File

	 */
	public static File save1(String rootPath,File file) throws IOException{
		String fileName = getNewName(file.getName());
		String path = rootPath + getRealPath(fileName);
		File newFile = new File(path);
		FileUtils.copyFile(file, newFile);
		return newFile;
	}
	
	/**

	 * 

	 * @Author 执笔

	 * @Date 2016年1月6日 上午10:21:05

	 * @TODO spingmvc 的保存文件

	 * @param rootPath

	 * @param file

	 * @return

	 * @throws IllegalStateException

	 * @throws IOException String

	 */
	public static String save(String rootPath,MultipartFile file) throws IllegalStateException, IOException{
		String fileName = getNewName(file.getOriginalFilename());
		String path = rootPath + getRealPath(fileName);
		File newFile = new File(path);
		newFile.getParentFile().mkdirs();
		newFile.createNewFile();
		file.transferTo(newFile);
		return fileName;
	}
	
	/**

	 * 保存文件得到文件

	 * @Author 执笔

	 * @Date 2016年2月20日 下午6:53:36

	 * File

	 */
	public static File save1(String rootPath,MultipartFile file) throws IllegalStateException, IOException{
		String fileName = getNewName(file.getOriginalFilename());
		String path = rootPath + getRealPath(fileName);
		File newFile = new File(path);
		newFile.getParentFile().mkdirs();
		newFile.createNewFile();
		file.transferTo(newFile);
		return newFile;
	}
	
	/**

	 * 

	 * @Author 执笔

	 * @Date 2016年1月6日 上午10:10:16

	 * @TODO 根据文件名读取文件

	 * @param rootPath

	 * @param fileName

	 * @return File

	 */
	public static File read(String rootPath,String fileName){
		return new File(rootPath + getRealPath(fileName));
	}
	
	/**

	 * 

	 * @Author 执笔

	 * @Date 2016年1月6日 上午10:07:09

	 * @TODO 得到文件的相对完整路径

	 * @param fileName

	 * @return String

	 */
	public static String getRealPath(String fileName){
		return getPath(fileName)+fileName;
	}
	
	/**

	 * 

	 * @Author 执笔

	 * @Date 2016年1月6日 上午9:22:09

	 * @TODO 得到新的名字，文件类型不变

	 * @param name

	 * @return String

	 */
	public static String getNewName(String name){
		String back = name.substring(("."+name).lastIndexOf("."));
		return UUIDUtil.getUUID()+"."+back;
	}
	
	/**

	 * 

	 * @Author 执笔

	 * @Date 2016年1月6日 上午9:55:35

	 * @TODO 得到文件保存父路径

	 * @param fileName 文件名

	 * @return String

	 */
	public static String getPath(String fileName){
		String back = fileName.substring(("."+fileName).lastIndexOf("."));
		back = back.length()>5?"none":back;
		int code = fileName.hashCode()>0?fileName.hashCode() : -fileName.hashCode();
		return back+"/"+code%99+"/"+code%49+"/";
	}
	
	public static void main(String[] args) {
		System.out.println(getRealPath("default"));
		/*String path = "F:erifies/2BFR.jpg";

		try {

			FileUtil.save("F:erifies/",new File(path));

		} catch (IOException e) {

			e.printStackTrace();

		}

		File file= FileUtil.read("F:erifies/", "3c7d5143b7094f81b536991e26a50311.jpg");

		System.out.println(file.getAbsolutePath());

		System.out.println(file.isFile());*/
	}
}
